// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
//
// ███╗   ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗  ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║   ██║   ██║   ██║██║     █████╗
// ██║╚██╗██║██║   ██║   ██║   ██║██║     ██╔══╝
// ██║ ╚████║╚██████╔╝   ██║   ██║╚██████╗███████╗
// ╚═╝  ╚═══╝ ╚═════╝    ╚═╝   ╚═╝ ╚═════╝╚══════╝
// ------------------------------------------------
//
// This file is automatically generated.
// Please do not edit these files manually.
//
// ------------------------------------------------

#nullable restore

using System;
using System.Linq;
using Elastic.Clients.Elasticsearch.Serialization;

namespace Elastic.Clients.Elasticsearch.TransformManagement;

[System.Text.Json.Serialization.JsonConverter(typeof(Elastic.Clients.Elasticsearch.TransformManagement.Json.TransformIndexerStatsConverter))]
public sealed partial class TransformIndexerStats
{
	[System.Diagnostics.CodeAnalysis.SetsRequiredMembers]
	public TransformIndexerStats(long documentsIndexed, long documentsProcessed, System.TimeSpan exponentialAvgCheckpointDurationMs, double exponentialAvgDocumentsIndexed, double exponentialAvgDocumentsProcessed, long indexFailures, System.TimeSpan indexTimeInMs, long indexTotal, long pagesProcessed, System.TimeSpan processingTimeInMs, long processingTotal, long searchFailures, System.TimeSpan searchTimeInMs, long searchTotal, long triggerCount)
	{
		DocumentsIndexed = documentsIndexed;
		DocumentsProcessed = documentsProcessed;
		ExponentialAvgCheckpointDurationMs = exponentialAvgCheckpointDurationMs;
		ExponentialAvgDocumentsIndexed = exponentialAvgDocumentsIndexed;
		ExponentialAvgDocumentsProcessed = exponentialAvgDocumentsProcessed;
		IndexFailures = indexFailures;
		IndexTimeInMs = indexTimeInMs;
		IndexTotal = indexTotal;
		PagesProcessed = pagesProcessed;
		ProcessingTimeInMs = processingTimeInMs;
		ProcessingTotal = processingTotal;
		SearchFailures = searchFailures;
		SearchTimeInMs = searchTimeInMs;
		SearchTotal = searchTotal;
		TriggerCount = triggerCount;
	}
#if NET7_0_OR_GREATER
	public TransformIndexerStats()
	{
	}
#endif
#if !NET7_0_OR_GREATER
	[System.Obsolete("The type contains required properties that must be initialized. Please use an alternative constructor to ensure all required values are properly set.")]
	public TransformIndexerStats()
	{
	}
#endif
	[System.Diagnostics.CodeAnalysis.SetsRequiredMembers]
	internal TransformIndexerStats(Elastic.Clients.Elasticsearch.Serialization.JsonConstructorSentinel sentinel)
	{
		_ = sentinel;
	}

	public System.DateTimeOffset? DeleteTimeInMs { get; set; }
	public long? DocumentsDeleted { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long DocumentsIndexed { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long DocumentsProcessed { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	System.TimeSpan ExponentialAvgCheckpointDurationMs { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	double ExponentialAvgDocumentsIndexed { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	double ExponentialAvgDocumentsProcessed { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long IndexFailures { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	System.TimeSpan IndexTimeInMs { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long IndexTotal { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long PagesProcessed { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	System.TimeSpan ProcessingTimeInMs { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long ProcessingTotal { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long SearchFailures { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	System.TimeSpan SearchTimeInMs { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long SearchTotal { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long TriggerCount { get; set; }
}